首先我們需要有 Docker 環境,如果還沒有可以參考 Docker 安装
製作 dockerfile 我們需要先了解我們的程式是如何運行起來的。
了解這些步驟後我們就開始建立 Dockerfile
在資料夾內部建立 Dockerfile 文件,並編輯
❯ touch Dockerfile
我們的 docker image 的基礎 使用 node.js 環境,版本使用 LTS 也就是 14 版
FROM node:14
WORKDIR 指令可以指定工作目錄,可以理解為 shell 的 cd 指令
WORKDIR /usr/src/app
現在我們的 docker 容器中已經有了 node 及 npm 的環境,接下來我們要安裝我們應用程式所需要的依賴
COPY package*.json ./
RUN npm install
使用 COPY 來將本地文件複製到容器中 可以理解為 shell 的 cp
COPY . .
EXPOSE 通知 Docker 容器在運行時監聽指定的網絡端口。 也可以指定偵聽TCP還是UDP,默認值為TCP
EXPOSE 8088
CMD為執行中的容器提供初始指令。 Dockerfile 中只能有一個 CMD指令,這裡我們使用 node server.js 來啟動我們的伺服器
CMD [ "node", "server.js" ]
完整 Dockerfile 如下:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8088
CMD [ "node", "server.js" ]
❯ touch .dockerignore
在 .dockerignore 中加入以下內容,我們不需要把這些東西也包到容器中
node_modules
npm-debug.log
完成 Dockerflie 後我們就可以來編譯映像檔,執行
❯ docker build . -t 1-on-1-webrtc
❯ docker run -d --name webrtc -p 8088:8088 1-on-1-webrtc
打開瀏覽器 https://localhost:8088/ 測試看看
完整內容可以參考 Github
❯ git clone https://github.com/tc3oliver/1-on-1-webrtc.git
❯ cd 1-on-1-webrtc
❯ git checkout docker
❯ docker build . -t 1-on-1-webrtc
❯ docker run -d --name webrtc -p 8088:8088 1-on-1-webrtc